package com.stock.api;

import com.stock.DO.Stock4EvrDayDomain;
import com.stock.DO.Stock4MinuteDomain;
import com.stock.DO.StockUpdownDomain;
import com.stock.entity.StockBusiness;
import com.stock.response.ResponseResult;
import com.stock.vo.PageResult;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

@RequestMapping(path = "/api/quot")
public interface StockControllerAPI {
    /**
     个股日K数据查询 ，可以根据时间区间查询数日的K线数据
     默认查询历史20天的数据；
     */
    @GetMapping(path = "/stock/screen/dkline")
    public ResponseResult<List<Stock4EvrDayDomain>> getDayKLinData(@RequestParam("code") String stockCode);


    /**
     查询个股的分时行情数据，也就是统计指定股票T日每分钟的交易数据；
     响应数据字段：日期 交易量 交易金额 最低价 最高价 前收盘价 公司名称 开盘价 股票code 当前价
    */
    @GetMapping(path = "/stock/screen/time-sharing")
    ResponseResult<List<Stock4MinuteDomain>> stockScreenTimeSharing(String code);

    @GetMapping(path = "/stock/business/all")
    ResponseResult<List<StockBusiness>> getStockBusiness();

    /**
     * 将指定页的股票数据导出到excel表下
     * @param response
     * @param page  当前页
     * @param pageSize 每页大小
     */
    @GetMapping("/stock/export")
    public void stockExport(HttpServletResponse response, @RequestParam("page") Integer page, @RequestParam("pageSize") Integer pageSize);

    /**
     * 沪深两市个股涨幅分时行情数据查询，以时间顺序和涨幅查询前10条数据
     * @return
     */
    @GetMapping("/stock/increase")
    ResponseResult<List<StockUpdownDomain>> stockIncreaseLimit();


    //涨幅榜分页查询功能
    @GetMapping(path = "/stock/all")
    ResponseResult<PageResult<StockUpdownDomain>> stockPage(@RequestParam("page") Integer page, @RequestParam("pageSize") Integer pageSize);

    //涨停跌停接口
    /**
     涨停跌停是防止证券市场过度投机的产物，本意是防止股票市场过度波动；
     在中国A股市场,均设有涨幅和跌幅的限制,他们都是10%的限制,即所谓的涨停和跌停；
     注意：普通的股票最大涨跌幅为10%。特别处理股每天的最大涨跌幅不能超过前一交易日的5%；
     总之：涨停>=10%涨幅
     跌停<=-10%涨幅
     */
    @GetMapping(path = "/stock/updown/count")
    ResponseResult<Map> upDownCount();


    //涨停跌停接口
    /**
     涨停跌停是防止证券市场过度投机的产物，本意是防止股票市场过度波动；
     在中国A股市场,均设有涨幅和跌幅的限制,他们都是10%的限制,即所谓的涨停和跌停；
     注意：普通的股票最大涨跌幅为10%。特别处理股每天的最大涨跌幅不能超过前一交易日的5%；
     总之：涨停>=10%涨幅
     跌停<=-10%涨幅
     */
    @GetMapping(path = "/stock/tradevol")
    ResponseResult<Map> stockTradeVol4InnerMarket();


    /**
     * 查询当前时间下股票的涨跌幅度区间统计功能
     * 如果当前日期不在有效时间内，则以最近的一个股票交易时间作为查询点
     * @return
     */
    @GetMapping("/stock/updown")
    ResponseResult<Map> getStockUpDown();
}